package ym.service;

import dev.langchain4j.service.UserMessage;
import ym.pojo.*;

public interface IChatAssistant {
    String chat(String message);

    @UserMessage("根据以下{{it}}患者信息，回答评估过程、计算出NRS-2002评分、进行营养风险筛查，" +
            "其中assessmentProcess字段【评估过程】要不超过200字的文案，" +
            "patientNRS字段【NRS-2002评分】只要NRS-2002评分得出的数字，" +
            "assessmentResult字段【营养评估结果】的文字不超过8个，" +
            "patientMUST字段【MUST评分】不用填写")
    Patient patientNRS(String text);

    @UserMessage("根据以下{{it}}患者信息，回答评估过程、计算出NRS-2002评分、进行营养风险筛查，" +
            "其中assessmentProcess字段【评估过程】要不超过200字的文案，" +
            "patientNRS字段【NRS-2002评分】不用填写，" +
            "assessmentResult字段【营养评估结果】的文字不超过8个，" +
            "patientMUST【MUST评分】只要MUST评分得出的数字")
    Patient patientMUST(String text);

    @UserMessage("根据以下{{it}}患者信息，制定营养计划，" +
            "planName字段【计划名称】要求不超过20字的文案，" +
            "nutritionPlanExecutionStatus字段【执行状态】要求回答 未开始 ，" +
            "goal字段【计划目标描述，例如增肌、减脂、疾病康复等】要求不超过50字的文案，" +
            "dailyCalories字段【每日所需的总热量（千卡）】要求回答具体数字，" +
            "dailyProtein字段【每日所需的蛋白质摄入量（克）】要求回答具体数字，" +
            "dailyCarbohydrates字段【每日所需的碳水化合物摄入量（克）】要求回答具体数字，" +
            "dailyFat字段【每日所需的脂肪摄入量（克）】要求回答具体数字，"
    )
    NutritionPlan patientNutritionPlan(String text);

    @UserMessage("根据以下{{it}}患者信息，制定营养计划，" +
            "mealType字段【餐型， 例如早餐、午餐、晚餐】要求不超过10字的文案，" +
            "mealFoods字段【食物清单】要求不超过50字的文案 ，"
    )
    MealPlan patientMealPlan(String text);

    @UserMessage("根据以下{{it}}患者信息，制定营养计划，" +
            "formulaType字段【营养配方类型】要求不超过30字的文案，" +
            "volume字段【每日供给量（毫升）】要求回答具体数字，"
    )
    EnteralNutritionPlan patientEnteralNutritionPlan(String text);

    @UserMessage("根据以下{{it}}患者信息，制定营养计划，" +
            "nutrientComponents字段【营养成分列表（例如氨基酸、葡萄糖、脂肪乳等）】要求不超过30字的文案，" +
            "infusionRate字段【输注速率（毫升/小时）】要求回答具体数字，"
    )
    ParenteralNutritionPlan patientParenteralNutritionPlan(String text);
}
